- Look for areas that people do not use cars as much in
- Put more bikes in the areas where there are less people commuting to
work in cars
- Relation between motorized vehicles and bikes
- Parking spaces
- Last mile
- Where best to place bike stations
Load Approd Appropriate Packages
library(knitr)
library(tidyverse)
library(janitor)
library(lubridate)
library(here)
library(sf)
library(tmap)
library(tidycensus)
Knitr is used for properly transforming the r notebook into an html
file. The tidyverse is used to tidy data using other packages within in
such as dplyr. The janitor packages is used to clean up the variable
names from the data sets. The lubridate library is used to work with
date-times. The here library is used to locate files on the computer to
make it easier to load in the data sets. The sf library is used to work
with spatial data. The tmap library is used to create interaactive maps.
The tidycensus data is used to get data from the U.S Census Bureau data
via codes.
Read in the captial bike share data
bikes = (read.csv(here("data_raw", "202309-capitalbikeshare-tripdata.csv"))) |> clean_names()
Read in the Public Bike Rac
racks = st_read((here("data_raw", "Capital_Bikeshare_Locations.geojson"))) |> clean_names()
Reading layer `Capital_Bikeshare_Locations' from data source `C:\Users\thistljy\Documents\ds241_final\data_raw\Capital_Bikeshare_Locations.geojson' using driver `GeoJSON'
Simple feature collection with 754 features and 27 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: -77.36842 ymin: 38.78264 xmax: -76.82554 ymax: 39.12584
Geodetic CRS: WGS 84
Api Key to access the census data
census_api_key("9fc5d3792d3a5e922287c3f4e9995118766d50a2")
To install your API key for use in future sessions, run this function with `install = TRUE`.
Loading in the codes that is linked to access the specific census
data
v2018 = load_variables(2018, "acs5")
Load the relevant data from the 2017-2021 Census Data for Washington
DC
df_censcus=get_acs(geography = "tract",
variables=c("vehicles"="B08141_001",
"population" = "B01001_001",
"public_transportion" = "B08006_008"),
state="DC",geometry=TRUE,year=2021)
Getting data from the 2017-2021 5-year ACS
Downloading feature geometry from the Census website. To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
Using FIPS code '11' for state 'DC'
For this analysis, we will need the amount of vehiclces used in a
specific location in Washington D.c., the population for each area in
Washington D.C., and the usage of public transportation in those same
areas.
Make sure our data frames plot
plot(df_censcus)

plot(racks)
Warning: plotting the first 9 out of 27 attributes; use max.plot = 27 to plot all

Make each observation of vehicles, population, and public
transportation into their own columns
tmap_mode("view")
tmap mode set to interactive viewing
df_cens=df_censcus %>%
select(-moe) %>%
pivot_wider(names_from = "variable",
values_from = "estimate")|>
mutate(pub_pop = public_transportion / population,
v_pop = vehicles / population)
Read the Signed Bike Routes data into a spatial data frame.
bike_routes = st_read((here("data_raw", "Signed_Bike_Routes.geojson"))) |> clean_names()
Reading layer `Signed_Bike_Routes' from data source `C:\Users\thistljy\Documents\ds241_final\data_raw\Signed_Bike_Routes.geojson' using driver `GeoJSON'
Simple feature collection with 1024 features and 37 fields
Geometry type: LINESTRING
Dimension: XY
Bounding box: xmin: -77.08773 ymin: 38.8404 xmax: -76.92188 ymax: 38.98634
Geodetic CRS: WGS 84
Plot data
df_cens_adj = df_cens |> st_transform(4326)
bike_routes = st_as_sf(bike_routes, crs=st_crs(df_cens_adj))
df1 = st_as_sf(neigh, crs = st_crs(df_cens_adj))
racks = st_as_sf(racks, crs=st_crs(df_cens_adj))
tm_shape(df_cens_adj) +tm_polygons(c("pub_pop", "v_pop"), alpha=.5) + tm_shape(racks) +tm_symbols(size = 0.1, alpha = 0.5) +
tm_shape(bike_routes) + tm_lines(col="blue",lwd=1,alpha= 1) + tm_shape(df1) + tm_polygons()
Here, we see two maps of Washington D.C. The map on the right shows
the population proportion of people who use public transportation
(excluding taxicab), and on the right we see a the population proportion
of people who own vehicles. The assumption is that they use these
vehicles as the primary method to commute to work, school, or other
transportation needs. On both of the maps, the blue lines represent
signed bike routes routes. The assumption is that the primary target
areas to put more bike share stations should be where the bikes would be
the most accessible to ride on. Signed bike routes mean that those areas
are most likely the more safe areas to ride bikes in, and the area
around would be most accommodating to bike riders. The circles on each
map represents the current bike share locations.
From this map, it would seem that one of the more useful places to
place bike would be in East Potomac Park. # Data Sources:
Capital Bike Share Bike Racks: https://opendata.dc.gov/datasets/a1f7acf65795451d89f0a38565a975b3_5/about
Bike Share Data: https://capitalbikeshare.com/system-data Signed Bike
Routes: https://opendata.dc.gov/explore?collection=Dataset&query=Bike%20Routes
LS0tDQp0aXRsZTogIkhvdyB0aGUgZmxvdyBvZiB0cmFmZmljIG9mIGNhcnMgY29ycmVsYXRlcyB3aXRoIGJpa2Ugc2hhcmUgZGF0YSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCi0gTG9vayBmb3IgYXJlYXMgdGhhdCBwZW9wbGUgZG8gbm90IHVzZSBjYXJzIGFzIG11Y2ggaW4gDQotIFB1dCBtb3JlIGJpa2VzIGluIHRoZSBhcmVhcyB3aGVyZSB0aGVyZSBhcmUgbGVzcyBwZW9wbGUgY29tbXV0aW5nIHRvIHdvcmsgaW4gY2Fycw0KLSBSZWxhdGlvbiBiZXR3ZWVuIG1vdG9yaXplZCB2ZWhpY2xlcyBhbmQgYmlrZXMNCi0gUGFya2luZyBzcGFjZXMNCi0gTGFzdCBtaWxlDQotIFdoZXJlIGJlc3QgdG8gcGxhY2UgYmlrZSBzdGF0aW9ucyANCg0KDQojIExvYWQgQXBwcm9kIEFwcHJvcHJpYXRlIFBhY2thZ2VzDQoNCmBgYHtyfQ0KbGlicmFyeShrbml0cikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShqYW5pdG9yKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGhlcmUpIA0KbGlicmFyeShzZikgDQpsaWJyYXJ5KHRtYXApDQpsaWJyYXJ5KHRpZHljZW5zdXMpDQpgYGANCktuaXRyIGlzIHVzZWQgZm9yIHByb3Blcmx5IHRyYW5zZm9ybWluZyB0aGUgciBub3RlYm9vayBpbnRvIGFuIGh0bWwgZmlsZS4NClRoZSB0aWR5dmVyc2UgaXMgdXNlZCB0byB0aWR5IGRhdGEgdXNpbmcgb3RoZXIgcGFja2FnZXMgd2l0aGluIGluIHN1Y2ggYXMgZHBseXIuDQpUaGUgamFuaXRvciBwYWNrYWdlcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSB2YXJpYWJsZSBuYW1lcyBmcm9tIHRoZSBkYXRhIHNldHMuDQpUaGUgbHVicmlkYXRlIGxpYnJhcnkgaXMgdXNlZCB0byB3b3JrIHdpdGggZGF0ZS10aW1lcy4NClRoZSBoZXJlIGxpYnJhcnkgaXMgdXNlZCB0byBsb2NhdGUgZmlsZXMgb24gdGhlIGNvbXB1dGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGxvYWQgaW4gdGhlIGRhdGEgc2V0cy4NClRoZSBzZiBsaWJyYXJ5IGlzIHVzZWQgdG8gd29yayB3aXRoIHNwYXRpYWwgZGF0YS4NClRoZSB0bWFwIGxpYnJhcnkgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhYWN0aXZlIG1hcHMuDQpUaGUgdGlkeWNlbnN1cyBkYXRhIGlzIHVzZWQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgVS5TIENlbnN1cyBCdXJlYXUgZGF0YSB2aWEgY29kZXMuIA0KDQojIFJlYWQgaW4gdGhlIGNhcHRpYWwgYmlrZSBzaGFyZSBkYXRhDQoNCmBgYHtyfQ0KYmlrZXMgPSAocmVhZC5jc3YoaGVyZSgiZGF0YV9yYXciLCAiMjAyMzA5LWNhcGl0YWxiaWtlc2hhcmUtdHJpcGRhdGEuY3N2IikpKSB8PiBjbGVhbl9uYW1lcygpDQpgYGANCg0KIyBSZWFkIGluIHRoZSBQdWJsaWMgQmlrZSBSYWMNCg0KYGBge3J9DQpyYWNrcyA9IHN0X3JlYWQoKGhlcmUoImRhdGFfcmF3IiwgIkNhcGl0YWxfQmlrZXNoYXJlX0xvY2F0aW9ucy5nZW9qc29uIikpKSB8PiBjbGVhbl9uYW1lcygpIA0KYGBgDQogDQojIEFwaSBLZXkgdG8gYWNjZXNzIHRoZSBjZW5zdXMgZGF0YQ0KYGBge3J9DQpjZW5zdXNfYXBpX2tleSgiOWZjNWQzNzkyZDNhNWU5MjIyODdjM2Y0ZTk5OTUxMTg3NjZkNTBhMiIpDQoNCmBgYA0KIyBMb2FkaW5nIGluIHRoZSBjb2RlcyB0aGF0IGlzIGxpbmtlZCB0byBhY2Nlc3MgdGhlIHNwZWNpZmljIGNlbnN1cyBkYXRhIA0KYGBge3J9DQp2MjAxOCA9IGxvYWRfdmFyaWFibGVzKDIwMTgsICJhY3M1IikNCmBgYA0KDQojIExvYWQgdGhlIHJlbGV2YW50IGRhdGEgZnJvbSB0aGUgMjAxNy0yMDIxIENlbnN1cyBEYXRhIGZvciBXYXNoaW5ndG9uIERDDQoNCmBgYHtyfQ0KZGZfY2Vuc2N1cz1nZXRfYWNzKGdlb2dyYXBoeSA9ICJ0cmFjdCIsDQogICAgICAgICAgICAgICAgICB2YXJpYWJsZXM9YygidmVoaWNsZXMiPSJCMDgxNDFfMDAxIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3B1bGF0aW9uIiA9ICJCMDEwMDFfMDAxIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHVibGljX3RyYW5zcG9ydGlvbiIgPSAiQjA4MDA2XzAwOCIpLA0KICAgICAgICAgICAgICAgICAgc3RhdGU9IkRDIixnZW9tZXRyeT1UUlVFLHllYXI9MjAyMSkgDQpgYGANCkZvciB0aGlzIGFuYWx5c2lzLCB3ZSB3aWxsIG5lZWQgdGhlIGFtb3VudCBvZiB2ZWhpY2xjZXMgdXNlZCBpbiBhIHNwZWNpZmljIGxvY2F0aW9uIGluIFdhc2hpbmd0b24gRC5jLiwgdGhlIHBvcHVsYXRpb24gZm9yIGVhY2ggYXJlYSBpbiBXYXNoaW5ndG9uIEQuQy4sIGFuZCB0aGUgdXNhZ2Ugb2YgcHVibGljIHRyYW5zcG9ydGF0aW9uIGluIHRob3NlIHNhbWUgYXJlYXMuIA0KDQojIE1ha2Ugc3VyZSBvdXIgZGF0YSBmcmFtZXMgcGxvdA0KDQpgYGB7cn0NCnBsb3QoZGZfY2Vuc2N1cykNCnBsb3QocmFja3MpDQpgYGANCg0KIyBNYWtlIGVhY2ggb2JzZXJ2YXRpb24gb2YgdmVoaWNsZXMsIHBvcHVsYXRpb24sIGFuZCBwdWJsaWMgdHJhbnNwb3J0YXRpb24gaW50byB0aGVpciBvd24gY29sdW1ucw0KDQpgYGB7cn0NCg0KdG1hcF9tb2RlKCJ2aWV3IikNCg0KZGZfY2Vucz1kZl9jZW5zY3VzICU+JSANCiAgc2VsZWN0KC1tb2UpICU+JSANCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9ICJ2YXJpYWJsZSIsIA0KICAgICAgICAgICAgICB2YWx1ZXNfZnJvbSA9ICJlc3RpbWF0ZSIpfD4gDQogIG11dGF0ZShwdWJfcG9wID0gcHVibGljX3RyYW5zcG9ydGlvbiAvIHBvcHVsYXRpb24sDQogICAgICAgICB2X3BvcCA9IHZlaGljbGVzIC8gcG9wdWxhdGlvbikNCg0KYGBgDQojIFJlYWQgdGhlIFNpZ25lZCBCaWtlIFJvdXRlcyBkYXRhIGludG8gYSBzcGF0aWFsIGRhdGEgZnJhbWUuIA0KDQpgYGB7cn0NCmJpa2Vfcm91dGVzID0gc3RfcmVhZCgoaGVyZSgiZGF0YV9yYXciLCAiU2lnbmVkX0Jpa2VfUm91dGVzLmdlb2pzb24iKSkpIHw+IGNsZWFuX25hbWVzKCkgDQpgYGANCg0KDQojIFBsb3QgZGF0YQ0KYGBge3J9DQpkZl9jZW5zX2FkaiA9IGRmX2NlbnMgfD4gc3RfdHJhbnNmb3JtKDQzMjYpDQpiaWtlX3JvdXRlcyA9IHN0X2FzX3NmKGJpa2Vfcm91dGVzLCBjcnM9c3RfY3JzKGRmX2NlbnNfYWRqKSkNCmRmMSA9IHN0X2FzX3NmKG5laWdoLCBjcnMgPSBzdF9jcnMoZGZfY2Vuc19hZGopKQ0KDQpyYWNrcyA9IHN0X2FzX3NmKHJhY2tzLCBjcnM9c3RfY3JzKGRmX2NlbnNfYWRqKSkNCnRtX3NoYXBlKGRmX2NlbnNfYWRqKSArdG1fcG9seWdvbnMoYygicHViX3BvcCIsICJ2X3BvcCIpLCBhbHBoYT0uNSkgKyB0bV9zaGFwZShyYWNrcykgK3RtX3N5bWJvbHMoc2l6ZSA9IDAuMSwgYWxwaGEgPSAwLjUpICsgICANCnRtX3NoYXBlKGJpa2Vfcm91dGVzKSArIHRtX2xpbmVzKGNvbD0iYmx1ZSIsbHdkPTEsYWxwaGE9IDEpIA0KYGBgDQoNCkhlcmUsIHdlIHNlZSB0d28gbWFwcyBvZiBXYXNoaW5ndG9uIEQuQy4gVGhlIG1hcCBvbiB0aGUgcmlnaHQgc2hvd3MgdGhlIHBvcHVsYXRpb24gcHJvcG9ydGlvbiBvZiBwZW9wbGUgd2hvIHVzZSBwdWJsaWMgdHJhbnNwb3J0YXRpb24gKGV4Y2x1ZGluZyB0YXhpY2FiKSwgYW5kIG9uIHRoZSByaWdodCB3ZSBzZWUgYSB0aGUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uIG9mIHBlb3BsZSB3aG8gb3duIHZlaGljbGVzLiBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXkgdXNlIHRoZXNlIHZlaGljbGVzIGFzIHRoZSBwcmltYXJ5IG1ldGhvZCB0byBjb21tdXRlIHRvIHdvcmssIHNjaG9vbCwgb3Igb3RoZXIgdHJhbnNwb3J0YXRpb24gbmVlZHMuIE9uIGJvdGggb2YgdGhlIG1hcHMsIHRoZSBibHVlIGxpbmVzIHJlcHJlc2VudCBzaWduZWQgYmlrZSByb3V0ZXMgcm91dGVzLiBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSBwcmltYXJ5IHRhcmdldCBhcmVhcyB0byBwdXQgbW9yZSBiaWtlIHNoYXJlIHN0YXRpb25zIHNob3VsZCBiZSB3aGVyZSB0aGUgYmlrZXMgd291bGQgYmUgdGhlIG1vc3QgYWNjZXNzaWJsZSB0byByaWRlIG9uLiBTaWduZWQgYmlrZSByb3V0ZXMgbWVhbiB0aGF0IHRob3NlIGFyZWFzIGFyZSBtb3N0IGxpa2VseSB0aGUgbW9yZSBzYWZlIGFyZWFzIHRvIHJpZGUgYmlrZXMgaW4sIGFuZCB0aGUgYXJlYSBhcm91bmQgd291bGQgYmUgbW9zdCBhY2NvbW1vZGF0aW5nIHRvIGJpa2UgcmlkZXJzLiBUaGUgY2lyY2xlcyBvbiBlYWNoIG1hcCByZXByZXNlbnRzIHRoZSBjdXJyZW50IGJpa2Ugc2hhcmUgbG9jYXRpb25zLiANCg0KRnJvbSB0aGlzIG1hcCwgaXQgd291bGQgc2VlbSB0aGF0IG9uZSBvZiB0aGUgbW9yZSB1c2VmdWwgcGxhY2VzIHRvIHBsYWNlIGJpa2Ugd291bGQgYmUgaW4gRWFzdCBQb3RvbWFjIFBhcmsuIA0KIyBEYXRhIFNvdXJjZXM6DQoNCkNhcGl0YWwgQmlrZSBTaGFyZSBCaWtlIFJhY2tzOiBodHRwczovL29wZW5kYXRhLmRjLmdvdi9kYXRhc2V0cy9hMWY3YWNmNjU3OTU0NTFkODlmMGEzODU2NWE5NzViM181L2Fib3V0DQpCaWtlIFNoYXJlIERhdGE6IGh0dHBzOi8vY2FwaXRhbGJpa2VzaGFyZS5jb20vc3lzdGVtLWRhdGENClNpZ25lZCBCaWtlIFJvdXRlczogaHR0cHM6Ly9vcGVuZGF0YS5kYy5nb3YvZXhwbG9yZT9jb2xsZWN0aW9uPURhdGFzZXQmcXVlcnk9QmlrZSUyMFJvdXRlcw0KDQoNCg0KDQo=